Mankind is entering the third era of computing, namely cognitive computing which holds great promise in delivering intelligence and knowledge from huge volumes of data. Today's cognitive computers are based on the von-Neumann architecture in which the computing and the memory units are separated. Cognitive computing is inherently data-centric, meaning that huge amounts of data need to be shuttled back and forth at high speeds, a task at which the von-Neumann architecture is highly inefficient. It is becoming increasingly clear that in order to build efficient cognitive computers, one needs to transform non von Neumann architectures where memory and logic coexist in some form.
The fascinating new area of “mem-computing” is a key non-von-Neumann approach being researched. The critical element in this novel computing paradigm is a very high-density, low-power, variable state, programmable and non-volatile nanoscale memory device. A fundamental computational primitive that can be realized entirely within such memory devices is a matrix-vector-multiplication. This primitive is of particular interest, as it forms the basis of several linear algebraic operations. Realizing the matrix-vector-computation entirely within memory devices could bring significant power and/or speed advantages compared to the conventional von Neumann approach where the data has to be shuttled back and forth between CPU and memory.
However, many challenges remain to be solved in order to perform accurate matrix-vector-computations in an array of memory devices. One of them is the limited precision and dynamic range that is possible to achieve in practice when coding matrix element as conductance values and vector elements as storage values. Increasing the precision of the matrix-vector-multiplications is important to be able to deal with a broader range of practical problems.
Beside a usage of this technique in cognitive computing, the problem of a fast and precise matrix-vector-multiplication is highly relevant in a wide field of technical and commercial computing. It may be used in data transformation in communication systems, e.g., mobile communication, in optimization problems, e.g., supply chain management or, in pricing optimization engines. Thus, being able to deliver a high-speed method for matrix-vector-multiplications is of interest across different vertical industries.